草庐IT

C++ 堆损坏

全部标签

c++ - 删除 char* 进行字节转换

每次读取文件时,我都尝试使用不同长度的字节来读取二进制文件。获得值后,我尝试将字节转换为char*。我创建了一个简单的代码如下://ThiscodeiscompiledinVisualStudio2010typedefunsignedcharBYTE;BYTE*s;s=newBYTE[3];//Iread2bytesfromthefile,Iadd+1toreserveNULLs[0]='a';s[1]='b';s[2]=NULL;//justanexampleIget2bytesfromfilechar*b;b=newchar(sizeof(s));strcpy(b,(char*)s

红米note 11 4 G 手机nv数据已损坏解决办法

 1..刷入fastbootflashmd1imgmd1img.img可以开机(不会无限重启)基带没有了【只能当WiFi平板电脑使用】 2..在网上找了了好久的方法,终于找到一个修复了我的【红米note114G】破手机   具体如下:  1.安装【selenes_images_V12.5.2.0.RKUCNXM_20211126.0000.00_11.0_cn_61341862f8.tgz】安装包,记住是用【SPFlashTool】刷机工具 2..如果你和我一样是【刷掉了基带.IMEI】  那么你看仔细了和我一样机型‘红米note114G【红米10、102022、10PRIME、10Prime

c++ - 堆损坏错误;无法发布 cv::Mat opencv

此代码在最后一行之前工作正常。它在磁盘上保存了正确的图像,但在退出函数后显示“内存泄漏”——堆损坏。我读过Mat不需要明确发布。就我而言,它在释放和不释放时都会崩溃。请帮忙。voidCannyEdgeDetectionFilter::applyFilter(Mat&mat,Mat&mixedBandsMat){//MatmixedBandsMat;vectorbandWiseImages;split(mat,bandWiseImages);//!EvaluatenumChannelstobefilteredintheinputimageintnumChannels=mat.channe

c++ - 使用 clEnqueueWriteBuffer 的内存损坏 - OpenCL

我正在编写一些从主机向设备发送大量数据的代码,但它的行为不稳定。在下面的代码中,我试图从主机向设备发送一个数组。数组大小在每次迭代中递增,逐渐增加发送到设备的内存量。数组中的第一个元素填充了一个非零值,它从内核内部读取并打印到控制台。从主机和设备读取的值应该相同,但在某些迭代中却不同。代码如下:intSizeArray=0;for(intj=1;j测试此代码的设备具有以下功能:-Name:Intel(R)HDGraphics4000-DeviceVersion:OpenCL1.1-DriverVersion:8.15.10.2696-MaxMemoryAllocationSize:42

c++ - 由于 #pragma pack 错误导致的内存损坏 - std 映射损坏 - 插入时崩溃

我有一个正在处理的项目,在该项目中,std映射有一些奇怪的行为。我定义了自己的typedef映射,它将字符串映射到自定义类型的指针。将第一对添加到map后,只要我超出map,应用程序就会崩溃。经过一番折腾后,我将map更改为a并将其移至我的应用程序中的第一个调用,但它仍然崩溃。我不知道会发生什么。任何帮助,将不胜感激。这是目前崩溃的代码。LoggerPtrsyslogger(Logger::getLogger("CISInterface"));intmain(intargc,char*argv[]){typedefstd::mapMyMapDef;MyMapDeftmpString;t

c++ - 调试堆栈损坏问题

我正在C++(VisualStudio2015)中的大型应用程序上调试“访问冲突”异常。该应用程序是由多个库构建的,问题发生在其中一个(SystemC)上,尽管我怀疑问题的根源在别处。我看到的是一个函数调用,它破坏了调用者的成员函数的地址。m_update_phase=true;m_prim_channel_registry->perform_update();m_update_phase=false;inlinevoidsc_prim_channel_registry::perform_update(){for(inti=m_update_last;i>=0;--i){m_updat

c++ - 运算符删除导致堆损坏,而运算符新工作正常

我已经让operatornew工作了,但是当我调用delete时,它​​在free(ptr)行崩溃了。任何人都可以告诉我在这个基类中重载operatornew和delete时我做错了什么吗?提示:我不是在问设计问题。classBase{private:inti;public:Base():i(10){}staticvoid*operatornew(size_tsize){if(size=0)size=1;//pleasereadthislinecarefully!size=0!returnmalloc(size);}staticvoidoperatordelete(void*ptr,s

c++ - 使用快速英特尔随机生成器 (SSE2) 失败并出现堆栈...已损坏

我需要非常快(最快)的随机生成器。我从英特尔找到了这个:FastIntelRandomNumberGenerator看起来不错。所以我在MSVisualStudio2013中创建了项目://FastRandom.h:#pragmaonce#include"emmintrin.h"#include//definethisifyouwishtoreturnvaluessimilartothestandardrand();#defineCOMPATABILITYnamespaceBrans{__declspec(align(16))static__m128icur_seed;//uncome

c++ - 常规转换的内存损坏?调用了错误的函数

我有如下小程序:#include#includeusingnamespacestd;classA{public:virtualvoidhello(inti){coutmap_;A*testA=newC();map_[0]=(B*)testA;B*myB=static_cast(map_[0]);myB->nothing();C*testC=newC();map_[1]=(B*)testC;myB=static_cast(map_[1]);myB->nothing();return0;}作为输出,我期待以下内容:CNothingCNothing但这是我得到的:CHello0CNothin

c++ - 正常 block 后检测到堆损坏

我有以下代码,我不确定为什么当它命中Myclass的析构函数时我会收到堆损坏检测错误。我相信我正在正确地释放内存??#include#includeusingnamespacestd;classMyClass{private:char*mp_str;public:MyClass():mp_str(NULL){}~MyClass(){delete[]mp_str;}voidsetString(constchar*str);voidprintString();};intmain(){MyClass*a=newMyClass();std::vectormyVector;myVector.pu